/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.univnantes.alma.arbres.affichage;

import fr.univnantes.alma.arbres.Arbre;
import fr.univnantes.alma.arbres.Arbre.ArbreIteratorType;
import fr.univnantes.alma.arbres.Noeud;
import java.util.Iterator;


/**
 *
 * @author judu
 */
public class AffichageLA<T> {

    private Arbre<T> arbre1;
    private final ArbreIteratorType typeIt;

    public AffichageLA(Arbre<T> arbre1, Arbre.ArbreIteratorType typeIt) {
        this.typeIt = typeIt;
        this.arbre1 = arbre1;
    }

    @Override
    public String toString() {
        return this.print();
    }

    private String print() {
        Iterator<Noeud<T>> it = this.arbre1.iterator(this.typeIt);
        String sortie = new String();

        while(it.hasNext()){
            Noeud<T> current = it.next();
            sortie = sortie.concat(current.toString()+"\n");
            if(this.arbre1.hasFils(current)){
                sortie = sortie.concat("  a pour fils ");
                Noeud<T> fils = this.arbre1.getFirstFils(current);
                while(this.arbre1.hasNextFrere(fils)){
                    sortie = sortie.concat(fils.toString()+", ");
                    fils = this.arbre1.getNextFrere(fils);
                }
                sortie = sortie.concat(fils.toString()+"\n");
            } else {
                sortie = sortie.concat("  n'a pas de fils\n");
            }
        }
        return sortie;
    }

    



}
